// 处理权限路由模块
import { constantRoutes, asyncRoutes } from '@/router'

const state = {
  // 路由表--当前用户拥有的所有路由模块 constantRoutes-为静态路由列表默认拥有的模块
  routes: constantRoutes
}

const mutations = {
  // 修改router; 载荷为用户登录后需要添加的路由
  setRoutes(state, newRoutes) {
    // state.routes = [...state.routes, ...newRoutes] // 逻辑错误，不能使用之前缓存的路由进行添加
    state.routes = [...constantRoutes, ...newRoutes] // *默认为静态路由所以需要在静态路由为基础进行路由添加
  }
}

const actions = {
  // 筛选用户拥有的权限点并于路由结合 menus参数为当前用户可访问的菜单页
  filterRoutes(context, menus) {
    const routes = []
    menus.forEach(key => {
      routes.push(...asyncRoutes.filter(item => item.name === key))
    })
    context.commit('setRoutes', routes) // 将用户可以访问的页面提交给mutations进行合并
    return routes // 将结果返回，使用addRoutes将这些路由添加
  }
}

export default {
  namespaced: true,
  state,
  mutations,
  actions
}
